GitHub

您所在的位置:网站首页 staking pool GitHub

GitHub

2024-07-16 06:18| 来源: 网络整理| 查看: 265

Core contracts Lockup / Vesting contract Lockup Factory Multisig contract Staking Pool / Delegation contract Staking Pool Factory Voting Contract Whitelist Contract Building and deploying

See scripts folder for details.

Initializing Contracts with near-shell

When setting up the contract creating the contract account, deploying the binary, and initializing the state must all be done as an atomic step. For example, in our tests for the lockup contract we initialize it like this:

pub fn init_lockup( &self, runtime: &mut RuntimeStandalone, args: &InitLockupArgs, amount: Balance, ) -> TxResult { let tx = self .new_tx(runtime, LOCKUP_ACCOUNT_ID.into()) .create_account() .transfer(ntoy(35) + amount) .deploy_contract(LOCKUP_WASM_BYTES.to_vec()) .function_call( "new".into(), serde_json::to_vec(args).unwrap(), 200000000000000, 0, ) .sign(&self.signer); let res = runtime.resolve_tx(tx).unwrap(); runtime.process_all().unwrap(); outcome_into_result(res) }

To do this with near shell, first add a script like deploy.js:

const fs = require('fs'); const account = await near.account("foundation"); const contractName = "lockup-owner-id"; const newArgs = { "lockup_duration": "31536000000000000", "lockup_start_information": { "TransfersDisabled": { "transfer_poll_account_id": "transfers-poll" } }, "vesting_schedule": { "start_timestamp": "1535760000000000000", "cliff_timestamp": "1567296000000000000", "end_timestamp": "1661990400000000000" }, "staking_pool_whitelist_account_id": "staking-pool-whitelist", "initial_owners_main_public_key": "KuTCtARNzxZQ3YvXDeLjx83FDqxv2SdQTSbiq876zR7", "foundation_account_id": "near" } const result = account.signAndSendTransaction( contractName, [ nearAPI.transactions.createAccount(), nearAPI.transactions.transfer("100000000000000000000000000"), nearAPI.transactions.deployContract(fs.readFileSync("res/lockup_contract.wasm")), nearAPI.transactions.functionCall("new", Buffer.from(JSON.stringify(newArgs)), 100000000000000, "0"), ]);

Then use the near repl command. Once at the command prompt, load the script:

> .load deploy.js

Note: nearAPI and near are both preloaded to the repl's context.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3